package app

import (
	"gitee.com/enzolwb/my-web-scaffold/pkg/ecode"
	"github.com/gin-gonic/gin"
	"net/http"
)

/*//通用性 要分解多个多个方法，防止调用者修改错误码等
//返回 自定义的错误码 一般用于业务上的错误，例如验证Auth失败,传参错误， 添加失败，修改重复。
func Response(c *gin.Context,code int,data interface{})  {
	c.JSON(http.StatusOK, gin.H{
		"code": code,
		"msg": e.GetMsg(code),
		"data": data,
	})
}

//返回500 一般是程序内部的错误 代码中的error
func ResponseErr(c *gin.Context, data error)  {
	c.JSON(http.StatusInternalServerError, gin.H{
		"code": e.XERROR,
		"msg": data.Error(),
	})
	c.Abort()
}*/

// 响应的数据结构
type ResponseJSON struct {
	Message string      `json:"message"`
	Code    int         `json:"code"`
	Data    interface{} `json:"data,omitempty"`
}

func Response(c *gin.Context, err error, args ...interface{}) {
	var data interface{}
	if len(args) > 0 {
		data = args[0]
	}

	ec := ecode.Cause(err)
	c.JSON(http.StatusOK, &ResponseJSON{
		Code:    ec.Code(),
		Message: ec.Message(),
		Data:    data,
	})
}
